package com.ys.utils.hjzf.sdk.enums;

public interface PayEnum {

    //系统响应码
    enum RespCodeEnum{
    }
    //业务响应码
    enum BizCode{
        success("JS000000","成功"),
        fail("JS100000","失败"),
        error("JS200000","系统异常，受理未知"),//请使用查询接口查询订单状态
        hjzf_other("JS999999","其他原因导致交易失败，请联系汇聚客服"),//请联系汇聚客服解决问题
        sign_erroe("JS100001","验签失败"),//参数签名结果不正确，请检查签名参数和方法是否都符合签名算法要求
        message_erroe("JS100002","报文参数错误"),//参数格式有误或者未按规则上传，请对照接口文档检查参数
        message_data_erroe("JS100004","报文参数缺失"),//缺少必要的请求参数，请检查参数是否齐全
        merchant_not_active("JS100005","商户未激活"),//请联系汇聚客服确认商户开通状态
        merchant_ip_erroee("JS100006","商户IP校验失败"),//发起交易的IP和报备的IP不一致 请联系汇聚客服确认已经报备的IP
        merchant_pay_type_erroe("JS100007","用户未开通此交易类型"),//请联系汇聚客服确认产品开通状态
        merchant_risk_erroe("JS100008","触发风控"),//交易存在风险被阻拦，请重新发起交易或联系汇聚客服
        merchant_channel_erroe("JS100009","交易渠道为空"),//请稍后重新发起交易，或联系汇聚客服
        merchant_erroe("JS100010","商户不存在"),//请检查商户编号是否有误，或联系汇聚客服确认产品开通状态
        order_money_error("JS100011","订单金额受限"),// 调整（小）订单金额重新发起
        order_info_error("JS100012","订单信息异常"),// 检查订单信息要素或者提供订单请求报文给汇聚客服
        order_no_error("JS100016","订单号重复"),//请更换订单号后重试
        request_bank_error("JS100017","请求银行失败"),//请调用查询接口查询订单状态或者联系汇聚客户确认订单状态
        bank_no_error("JS100022","银行卡找不到卡Bin"),//请检查银行卡号是否错误
        service_error("JS100023","请求服务器失败"),//请联系汇聚客服确认错误
        merchant_pay_no_erroe("JS100024","交易商户号不存在"),//请检查交易商户号是否错误
        merchant_match_error("JS100025","交易商户号不匹配"),//请检查上送的交易商户号是否和平台商户有绑定关系 快捷产品错误码
        sms_error("JS120001","短信验证码错误"),//请重新获取并输入正确的验证码
        bank_sign_error("JS120003","该卡未签约"),//请使用该卡进行签约后再交易 退款错误码
        back_money_error("JS002000","退款金额超限"),//请检查退款金额是否超过未退金额
        up_order_batch_handle("JS002001","上一笔退款正在处理"),//不允许对同一笔支付订单进行同时退款，请稍后重新发起
        back_money_notes_not_error("JS002002","退款记录不存在"),//请确认退款订单号是否正确
        order_success_notes_error("JS002003","订单成功记录不存在"),//请确认支付订单号以及支付状态
        back_money_handled("JS002004","退款记录已处理"),//当前退款记录已处理，请调用退款查询接口确认退款状态
        back_money_exists("JS002005","退款记录已存在"),//请更换退款订单号后重试
        back_money_closed("JS002006","退款功能已关闭"),//不允许退款， 请联系汇聚客服
        back_money_insufficient_amount("JS002007","支付订单剩余可退金额不足"),//请检查退款金额是否超过未退金额
        merchant_money_error("JS002008","账户可用余额不足"),//账户可用余额小于退款金额
        request_back_error("JS002009","请求通道退款异常"),//请求通道退款异常，请稍后重试或联系汇聚客服
        back_money_check_not("JS002010","打款退款复核不通过"),//打款退款，汇聚审核不通过，请联系汇聚客服
        back_money_server_error("JS002011","打款层返回错误描述"),//打款异常，请联系汇聚客服
        back_money_part_not("JS002012","不支持部分退款"),//当前通道不支持部分退款
        finance_system_freeze_fail("JS002013","账务系统冻结失败"),//请重新发起或联系汇聚客服
        back_not_api("JS002014","没有退款接口"),//请联系汇聚客服
        sub_merchant_system_freeze_fail("JS002015","子商户账务系统冻结失败"),//请重新发起或联系汇聚客服
        merchant_process_error("JS002016","商户审核不通过"),//退款请求，平台商户审核不通过
        terrace_process_error("JS002017","平台审核不通过"),//退款请求，汇聚审核不通过
        ;

        private String code;
        private String desc;

        BizCode(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }

        public String getDescByCode(String code) {
            for (PayEnum.BizCode value : PayEnum.BizCode.values()) {
                if (value.getCode().equals(code)) {
                    return value.getDesc();
                }
            }
            return success.getDesc();
        }
    }
    //错误响应码
    enum ErrCode{
        success("JS000000","成功");
        private String code;
        private String desc;

        ErrCode(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }

        public String getDescByCode(String code) {
            for (PayEnum.ErrCode value : PayEnum.ErrCode.values()) {
                if (value.getCode().equals(code)) {
                    return value.getDesc();
                }
            }
            return success.getDesc();
        }
    }
    //代付明细的交易状态详情
    enum TransStatusEnum {
        /**
         *
         */

        success("JS000000","成功");


        private String code;
        private String desc;

        TransStatusEnum(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }

        public String getDescByCode(String code) {
            for (PayEnum.TransStatusEnum value : PayEnum.TransStatusEnum.values()) {
                if (value.getCode().equals(code)) {
                    return value.getDesc();
                }
            }
            return success.getDesc();
        }
    }
}
